home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / infoplus.zip / PAGE_15.INC < prev    next >
Text File  |  1990-06-25  |  4KB  |  153 lines

  1. procedure page_15;
  2.  
  3. var
  4.   i : byte;
  5.   j : 0..3;
  6.   k : byte;
  7.   part : array[0..secsiz + 3] of byte;
  8.   xbool1 : boolean;
  9.   xbool2 : boolean;
  10.   xbool3 : boolean;
  11.   xbool4 : boolean;
  12.   xbyte : byte;
  13.   xlong : longint;
  14.   xword : word;
  15.  
  16. begin
  17.   caption2('Partition table data');
  18.   i:=$80;
  19.   xbool1:=false;
  20.   xbool2:=false;
  21.   repeat
  22.     with regs do begin
  23.       AX:=$0A01;
  24.       CX:=$0001;
  25.       DX:=i;
  26.       ES:=seg(part);
  27.       BX:=ofs(part);
  28.       intr($13, regs);
  29.       if nocarry then begin
  30.         xbool1:=true;
  31.         xbool2:=true
  32.       end else if i < $FF then
  33.         inc(i)
  34.       else
  35.         xbool1:=true
  36.     end
  37.   until xbool1;
  38.   if xbool2 then begin
  39.     writeln;
  40.     caption3('Unit');
  41.     writeln;
  42.     caption3('Partition');
  43.     writeln;
  44.     caption3('Bootable');
  45.     writeln;
  46.     caption3('Starting head');
  47.     writeln;
  48.     caption3('Starting sector');
  49.     writeln;
  50.     caption3('Starting cylinder');
  51.     writeln;
  52.     caption3('System ID');
  53.     writeln;
  54.     caption3('Ending head');
  55.     writeln;
  56.     caption3('Ending sector');
  57.     writeln;
  58.     caption3('Ending cylinder');
  59.     writeln;
  60.     caption3('First partition sector');
  61.     writeln;
  62.     caption3('Sectors in partition');
  63.     writeln;
  64.     xbool3:=false;
  65.     repeat
  66.       window(9, 4, twidth, tlength - 2);
  67.       writeln(i);
  68.       window(27, 5, twidth, tlength - 2);
  69.       clrscr;
  70.       for j:=0 to 3 do begin
  71.         window(27 + 12 * j, 5, 38 + 12 * j, tlength - 2);
  72.         writeln(j + 1);
  73.         xword:=$01BE + j shl 4;
  74.         xbyte:=part[xword];
  75.         case xbyte of
  76.           $00 : writeln('no');
  77.           $80 : writeln('yes')
  78.           else
  79.             writeln('(', hex(xbyte, 2), ')')
  80.         end;
  81.         xbyte:=part[xword + 4];
  82.         if xbyte > $00 then begin
  83.           writeln(part[xword + 1]);
  84.           writeln(part[xword + 2] and $3F);
  85.           writeln(part[xword + 3] +
  86.             word(part[xword + 2] shr 6 * 256));
  87.           case xbyte of
  88.             $01 : writeln('DOS-12');
  89.             $02,$03 : Writeln('XENIX');
  90.             $04 : writeln('DOS-16');
  91.             $05 : writeln('Ext DOS-16');
  92.             $06 : Writeln('Big DOS-16');
  93.             $07 : Writeln('QNX');
  94.             $08 : Writeln('Split');
  95.             $09 : Writeln('AIX data');
  96.             $51 : Writeln('Dsk Managr');
  97.             $56 : Writeln('GB');
  98.             $61 : Writeln('Speedstor');
  99.             $63 : Writeln('SysV/386');
  100.             $64 : Writeln('NOVELL');
  101.             $75 : Writeln('PC/IX');
  102.             $80 : Writeln('Minix v1.3-');
  103.             $81 : Writeln('Minix v1.5+');
  104.             $DB : Writeln('CP/M');
  105.             $E1 : Writeln('SpdStr-12');
  106.             $E4 : Writeln('SpdStr-16');
  107.             $FF : Writeln('BBT')
  108.             else
  109.               writeln('(', hex(xbyte, 2), ')')
  110.           end;
  111.           writeln(part[xword + 5]);
  112.           xbyte:=part[xword + 6];
  113.           writeln(xbyte and $3F);
  114.           writeln(cbw(part[xword + 7], xbyte shr 6));
  115.           xlong:=0;
  116.           for k:=11 downto 8 do
  117.             xlong:=xlong shl 8 + part[xword + k];
  118.           writeln(xlong);
  119.           xlong:=0;
  120.           for k:=15 downto 12 do
  121.             xlong:=xlong shl 8 + part[xword + k];
  122.           writeln(xlong)
  123.         end else for k:=1 to 9 do
  124.           writeln('-')
  125.       end;
  126.       xbool4:=false;
  127.       repeat
  128.         if i < $FF then begin
  129.           inc(i);
  130.           with regs do begin
  131.             AX:=$0A01;
  132.             CX:=$0001;
  133.             DX:=i;
  134.             ES:=seg(part);
  135.             BX:=ofs(part);
  136.             intr($13, regs);
  137.             if nocarry then begin
  138.               xbool4:=true;
  139.               pause1;
  140.               if endit then
  141.                 Exit;
  142.             end
  143.           end
  144.         end else begin
  145.           xbool3:=true;
  146.           xbool4:=true
  147.         end
  148.       until xbool4
  149.     until xbool3
  150.   end else
  151.     writeln('(no fixed disks)')
  152. end;
  153.